'''
 * CaRComp Execution Environment
 * 
 * Copyright (C) 2011 Taylor L. Riche
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
'''

def get_key(size, key_string):
    return hash(key_string) % size

class SmallHashMap(object):
    '''
    classdocs
    '''


    def __init__(self, size):
        '''
        Constructor
        '''
        self._size = size
        self._core = [None for i in range(self._size)]
        
    def put(self, key_string, value):
        key = self._get_key(key_string)
        if self._core[key] is None:
            self._core[key] = [value]
        else:
            self._core[key].append(value)
        
    def is_in(self, key_string):
        retval = False
        key = self._get_key(key_string)
        if self._core[key] is not None:
            retval = True
        return retval
    
    def get(self, key_string):
        key = self._get_key(key_string)
        return self._core[key]
        
    def _get_key(self, key_string):
        return get_key(self._size, key_string)